package code1.array;

/**
 * 原题链接：https://leetcode.cn/problems/minimum-size-subarray-sum/
 */
public class P209 {

    //滑动窗口法求最短子序列(也算双指针)
    public static int minSubArrayLen(int target, int[] nums) {
        int res=Integer.MAX_VALUE;
        int i=0;            //i为窗口左端，j为右端
        int sum=0;
        for(int j=0;j<nums.length;j++){
            sum+=nums[j];
            //保持j(右端)不变，不断缩进i(左端)
            while(sum>=target){
                int length=j-i+1;       //当前窗口长度
                res=Math.min(res,length);
                sum=sum-nums[i];
                i++;                    //动态调整窗口的左端
            }
            //左端缩进至不满足要求后，右端继续移动
        }
        if(res==Integer.MAX_VALUE){
            return 0;
        }
        return res;
    }

    public static void main(String[] args) {
        int[] nums={2,3,1,2,4,3};
        int ans = minSubArrayLen(7, nums);
        System.out.println(ans);
    }
}
